import Vue from 'vue';
import Vuex from 'vuex';
import axios from 'axios';
import { nanoid } from 'nanoid';
Vue.use(Vuex);

//求和相关的配置,也可以利用es6的模块化暴露出去再import引入
const countOptions = {
    namespaced: true,
    actions: {
        oddjia(context, value) {
            if (context.state.sum % 2 === 0) {
                return;
            } else {
                context.commit('JIA', value);
            }
        },
        delayjia(context, value) {
            setTimeout(() => {
                context.commit('JIA', value);
            }, 500);
        }
    },
    mutations: {
        JIA: function (state, value) {
            state.sum += value;
        },
        JIAN(state, value) {
            state.sum -= value;
        },
    },
    state: {
        sum: 0,
        school: '成都信息工程大学',
        subject: '前端',
    },
    getters: {
        bigSum(state) {
            return state.sum * 10;
        }
    }
}
//管理人员相关的配置,也可以利用es6的模块化暴露出去再import引入
const personOptions = {
    namespaced: true,
    actions: {
        addPersonWang(context, value) {
            if (value.name.indexOf('王') === 0) {
                context.commit('ADD_PERSON', value);
            } else {
                alert('错误，添加的人必须姓王');
            }
        },
        addPersonFromServe(context) {
            axios.get('https://v1.hitokoto.cn/?c=f&encode=text').then(res => {
                context.commit('ADD_PERSON', { id: nanoid(), name: res.data });
            }, err => {
                console.log('error');
            });
        }
    },
    mutations: {
        ADD_PERSON(state, value) {
            state.personList.push(value);
        }
    },
    state: { personList: [{ id: '001', name: '张三' }] },
    getters: {
        getFirstName(state) {
            return state.personList[0].name;
        }
    }
}


//创建并暴露store
export default new Vuex.Store({
    modules: {
        //对象的简写形式
        countOptions,
        personOptions
    }
});


